#ifndef STUDENT_H
#define STUDENT_H

#include <string>

using namespace std;
#define ID_MAX_LEN 255
#define NAME_MAX_LEN 255

class Student
{
    public:
        /** Default constructor */
        Student(){ }
        Student(string studentID, string name, string department, string email);
		Student(string studentID, string name, int math, int comp, int eng);
        /** Default destructor */
        virtual ~Student();
        /** Access pStudentId
         * \return The current value of pStudentId
         */
        string GetStudentId() { return pStudentId; }
        /** Set pStudentId
         * \param val New value to set
         */
        void SetStudentId(string val) { pStudentId = val; }
        /** Access pName
         * \return The current value of pName
         */
        string GetName() { return pName; }
        /** Set pName
         * \param val New value to set
         */
        void SetName(string val) { pName = val; }
        /** Access pDepartment
         * \return The current value of pDepartment
         */
        string GetDepartment() { return pDepartment; }
        /** Set pDepartment
         * \param val New value to set
         */
        void SetDepartment(string val) { pDepartment = val; }
        /** Access pEmail
         * \return The current value of pEmail
         */
        string GetEmail() { return pEmail; }
        /** Set pEmail
         * \param val New value to set
         */
        void SetEmail(string val) { pEmail = val; }

		int GetMaths(){ return maths;}
		int GetComputer(){ return computer;}
		int GetEnglish(){ return english;}
		void SetMaths(int mat){ maths = mat;}
		void SetComputer(int com){ computer = com;}
		void SetEnglish(int eng){ english = eng;}

        void Update(Student* student){
            SetStudentId(student->GetStudentId());
            SetName(student->GetName());
            SetEmail(student->GetEmail());
            SetDepartment(student->GetDepartment());
        }
		Student *next;
		bool filter_id;
		bool filter_name;
		bool filter_maths;
		void Print();
		void Save(char *content);
    protected:

    private:
        string pStudentId; //!< Member variable "pStudentId"
        string pName; //!< Member variable "pName"
        string pDepartment; //!< Member variable "pDepartment"
        string pEmail; //!< Member variable "pEmail"
		int maths;
		int computer;
		int english;


};

#endif // STUDENT_H
